#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdlib.h>
#include <string.h>

// key_t ftok(const char *pathname, int proj_id);

struct msgbuf
{
    long mtype;       // 数据的编号
    char mtext[1024]; // 数据的正文
};

int main()
{
    // key_t key1 = ftok("./", 10);
    // key_t key2 = ftok("./", 10);
    // printf("key1 = %d key2 = %d\n", key1, key2);

    key_t key = ftok("./", 100);
    int msgid = msgget(key, IPC_CREAT | 0666);
    // 根据key值获取消息队列的ID，如果消息队列不存在则创建

    printf("%#x %d\n", key, msgid);

    // 创建消息结构体
    struct msgbuf data;
    memset(&data, 0, sizeof(data));
    data.mtype = 100;

    while (1)
    {
        printf("请输入要发送的数据：\n");
        fgets(data.mtext, sizeof(data.mtext), stdin);

        if (strcmp(data.mtext, "exit") == 0)
        {
            break;
        } // 往消息队列中 发送数据
        msgsnd(msgid, &data, sizeof(data.mtext), 0);
    }

    return 0;
}
